﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using GrayParrot.Communications.Core;
using GrayParrot.Communications.Configuration;

namespace GrayParrot.Communications.Notifications
{
    /// <summary>
    /// Notification message class...
    /// </summary>
    [Serializable]
    public class NotificationMessage
    {
        /// <summary>
        /// Gets or sets the email settings ovverides...
        /// </summary>
        /// <value>
        /// The email settings ovverides..
        /// </value>
        /// <remarks>
        /// Nel caso in cui la specifica email deve essere inviata da un particolare indirizzo a
        /// dei particolari indirizzi, bisogna effettuare l'override della configurazione impostata
        /// nel file di configurazione del servizio...
        /// </remarks>
        public EmailSettingsOvveride EmailSettings { get; set; }

        /// <summary>
        /// Gets or sets the type of the message (this is the subject in case of email)...
        /// </summary>
        /// <value>
        /// The type.
        /// </value>
        public string Type { get; set; }

        /// <summary>
        /// Gets or sets the message body...
        /// </summary>
        /// <value>
        /// The message body.
        /// </value>
        public string MessageBody { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether [extend to GUI]...
        /// </summary>
        /// <value>
        ///   <c>true</c> if [extend to GUI]; otherwise, <c>false</c>.
        /// </value>
        public bool ExtendToGui { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether [use email]...
        /// </summary>
        /// <value>
        ///   <c>true</c> if [use email]; otherwise, <c>false</c>.
        /// </value>
        public bool UseEmail { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether [peristent message].
        /// </summary>
        /// <value>
        ///   <c>true</c> if [peristent message]; otherwise, <c>false</c>.
        /// </value>
        public bool PeristentMessage { get; set; }

        /// <summary>
        /// Gets or sets the severity...
        /// </summary>
        /// <value>
        /// The severity.
        /// </value>
        public MessageSeverity Severity { get; set; }

        /// <summary>
        /// Initializes a new instance of the <see cref="NotificationMessage"/> class.
        /// </summary>
        public NotificationMessage()
        {
        }
    }
}
